package com.bit.blog.common.utils;

import jakarta.validation.constraints.NotBlank;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecuretyUtils {
    /**
     *
     * @param password 用户输入的密码
     * @return 盐值+md5(密码+盐值）
     */
    public static String enrcypt(@NotBlank String password) {
        //盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        //密文 md5(明文password + salt)
        String finalPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes(StandardCharsets.UTF_8));
        //数据库中存储 盐值salt+密文
         return (salt+finalPassword);
    }

    /**
     *
     * @param sqlPassword 盐值+密文
     * @param password 用户输入的密码
     * @return true-密码正确, false-密码错误
     */
    public static Boolean verify(String sqlPassword, String password) {
        if(!StringUtils.hasLength(sqlPassword) || !StringUtils.hasLength(password)){
            return false;
        }
        if(sqlPassword.length() != 64){
            return false;
        }
        //获取盐值
        String salt = sqlPassword.substring(0, 32);
        String finalPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes(StandardCharsets.UTF_8));
         return (sqlPassword.equals(salt+finalPassword));
    }
}
